FX Spot

An exchange rate is the price of 1 unit of the base(fixed) currency in terms of the price(variable) currency. For example, if Euro-Dollar = $1.1168$, it means that $1$ Euro costs $1.1168$ Dollars. FX spot trades settle on the second business day after the trade date.

In FX markets, as in other financial markets, market participants confront a two-sided price in the form of bid price and an offer price quoted by the dealer. The bid price is the price at which the dealer is willing to buy the base currency. The ask price is the price at which the dealer is willing to sell the base currency.

For example, if the Euro-Dollar spot rate = $1.1166-1.1170$, the dealer is willing to buy the Euro at $1.1166$ dollars and sell Euro at $1.1170$ Dollars.

Players in the FX Market

Usually the client receives a bid-offer price from the dealer and the dealer receives from the interbank market. In the interbank market, banks constantly quote a bid and an ask based on anticipated currency movements and thereby make the market.

Cash Date, Tom Date and Spot date

Today is said to be the cash date, it the day you trade. Tom is an abbreviation for tomorrow - $T+1$ business date. Spot date is $T+2$ business days. FX spot settles on $T+2$ day. If a trader buys $1$ milion at USD/JPY = $100.00$ in a spot trade, your dollar account will be credited $1$ million and your Yen account will debited $100$ million on $T+2$ date.

Cross Rates

Suppose the dealer gives us the following quotes:


In [105]:
import numpy as np
import pandas as pd

gbp_usd = {'bid':1.4601, 'ask':1.4602}
usd_sgd = {'bid':1.4052, 'ask':1.4055}
usd_inr = {'bid':67.6034,'ask':67.6110}
usd_jpy = {'bid':117.6630,'ask':117.6690}

data = [gbp_usd,usd_sgd,usd_inr,usd_jpy]

market_data = pd.DataFrame(data,index=['GBP/USD','USD/SGD','USD/INR','USD/JPY'])
print(market_data)


              ask       bid
GBP/USD    1.4602    1.4601
USD/SGD    1.4055    1.4052
USD/INR   67.6110   67.6034
USD/JPY  117.6690  117.6630

An Indian importer would like to buy SGD - sell INR.

To buy $1.4052$ SGD, you must sell $1$ USD. But, to get $1$ USD, you must sell $67.6110$ INR. Therefore, $1.4052$ SGD : $1$ USD : $67.6110$ INR. So, to buy $1$ SGD, you must pay

$$1\text{ SGD} = \frac{67.6110\text{ INR}}{1.4052}. $$

Likewise say, an Indian exporter would like to sell SGD - buy INR.

To sell $1.4055$ SGD, you must buy $1$ USD. With $1$ USD, you could buy $67.6034$ INR. Therefore, $1.4055$ SGD : $1$ USD : $67.6034$ INR. So, to sell $1$ SGD, you buy

$$1\text{ SGD} = \frac{67.6034\text{ INR}}{1.4055}. $$

The currency pair

$$\frac{SGD}{INR}=\frac{USD/INR}{USD/SGD}$$

As a shortcut, while performing division, we always cross-divide. SGD/INR two-way quotes would be,


In [106]:
print ("SGD/INR two way quotes")
bid = market_data.at["USD/INR","bid"]/market_data.at["USD/SGD","ask"]
ask = market_data.at["USD/INR","ask"]/market_data.at["USD/SGD","bid"]
sgd_inr = [bid, ask]
print(sgd_inr)


SGD/INR two way quotes
[48.099181785841331, 48.114859094790781]

While performing multiplication, we perform parallel multiplication.

$$\frac{GBP}{JPY}=\frac{GBP}{USD}\times\frac{USD}{JPY}$$

The two-way GBP/JPY quotes would be,


In [107]:
print ("GBP/JPY two way quotes")
bid = market_data.at["GBP/USD","bid"]/market_data.at["USD/JPY","bid"]
ask = market_data.at["GBP/USD","ask"]/market_data.at["USD/JPY","ask"]
gbp_jpy = [bid, ask]
print(gbp_jpy)


GBP/JPY two way quotes
[0.012409168557660437, 0.012409385649576353]

Mark-to-market exercise

The hypothetical exercise of squaring off all your trades is called mark-to-market. Mark-to-market is the process of calculating the market vlue of your assets. It reflects the money that will be realised from closing out your positions in the home currency.

Suppose, you buy $1,000,000$ sterling at the deal rate of GBP/USD = $1.5000$. You are long $1,000,000$ sterling. At the end of the day, GBP/USD is trading at $1.4900$. This is a loss of 100 pips for every GBP. The MTM value of your spot trade is

$$(1.4900 - 1.5000)\times{1,000,000}=-10,000\text{ USD}$$

Dealing room structure

Typically traders have position limits - both intra-day trading limits and end-of-day limits.

Trading books and cash books

What happens to a spot trade on maturity? If you do a spot trade today, say buy $1$ million USD at USD/JPY=$100$, this trade will be settled on the spot date - 2 clear business days from the trade date (T+2). On the settlement date, your USD bank account will get credited by $1,000,000$ dollars. In return, you must pay $100$ million yens to the counterparty.

Receiving USD credit in your bank account is great. But, what if you do not have $100$ million yens to pay the counterparty? Perhaps, you will have to borrow yens from another entity - it may be another bank, or it could be another unit of your bank. In other words, you will have to take out a yen loan. The USD balance in your bank account may be deposited in another bank.

It is important to understand, that the long USD and short JPY positions still remain. It has just moved from your FX trading book to the cash books.

You earn interest on your USD deposit and pay interest on the JPY loan. This way you have pushed ahead(rolled-forward) the maturing trades, further out to a future date.

You may also close out your long USD/short JPY spot position, if you do an FX cash trade. As FX cash trades settle on the same day, you will sell USD at the prevailing USD/JPY cash rate.

You may even keep your USD depo/JPY loan going for a few days, and then do a spot, tom or cash trade to close out your positions.

FX Spot Portfolio market risk

Suppose you enter the follow spot trades.

  1. Long 10,000,000 USD at USD/JPY = 98.90
  2. Short 8,000,000 GBP at GBP/USD = 1.5010
  3. Short 3,000,000 USD at USD/JPY = 98.70
  4. Long 12,000,000 GBP at GBP/USD = 1.5030

Spot risk is the change in the value of the portfolio for a 1 pip(0.0001) movement in the spot rate. The current mid-market rates are :

USD/JPY = 99.05 GBP/USD = 1.4985

The mark-to-market value for the deals are

Deal 1 : $-(98.90\times10,000,000)+(99.05\times{10,000,000})=1,600,000$ JPY.

Deal 2 : $(1.5010\times8,000,000)-(1.4985\times{8,000,000})=19,200$ USD.

Deal 3 : $(98.70\times3,000,000)-(99.05\times{3,000,000})=1,080,000$ JPY.

Deal 4 : $-(1.5030\times12,000,000)+(1.4985\times{12,000,000})=-52,800$ USD.

Your net spot position is 7,000,000 USD and 4,000,000 GBP. If JPY is the home currency, the spot risk of the dollar trades is $7,000,000\times{0.01}=70,000$ JPY and on GBP trades is $4,000,000\times{0.01}=40,000$ JPY.

Interbank borrowing and LIBOR rates

There is a large global market for short-term borrowing and lending in various currencies. Banks borrow dollars from other banks, which are essentially short-term unsecured loans. In London, the benchmark rate on such dollar loans is called LIBOR. LIBOR is the rate at which London banks lend dollars to other London banks. LIBOR is considered to be the best representative rate on a dollar borrowed by a private i.e. non-government, high-quality AA borrower.

Let's say a London bank such as NatWest needs to borrow $10 million for 30 days. It obtains a quote from the Royal Bank of Scotland for a lending rate of 5.25%. Thus, the 30-day LIBOR is 5.25 percent. If Natwest takes the deal, it will owe

$FV=PV\left[1+r\times\left(\frac{\text{Act}}{360}\right)\right]\\ FV=10,000,000\left[1+0.0525\times\left(\frac{\text{30}}{360}\right)\right]=10,043,750$

The US Dollar is not the only currency for being borrowed and lent. LIBOR rates are quotes for five currencies - Dollar(USD), Euro(EUR), Pound-sterling(GBP), Japanese Yen(JPY) and Swiss Franc(CHF) for 7 different maturities.

The different day-count basis conventions used in the market are Act/360, Act/365, 30/360.


In [108]:
# Money market deposit calculations

import numpy as np
import datetime

start_date = datetime.date(2017,1,1)
end_date = datetime.date(2017,7,2)

t = end_date - start_date
act = t.days

# Tenor
act_by_360 = act/360
act_by_365 = act/365
thirty_by_360 = ((end_date.year-start_date.year)*360+(end_date.month-start_date.month)*30+(end_date.day-start_date.day))/360

# principal and 30-day USD LIBOR rate
pv = 10000000
r = 0.05

# Calculate maturity value
fv1 = pv*(1+r*act_by_360)
print(fv1)

fv2 = pv*(1+r*act_by_365)
print(fv2)

fv3 = pv*(1+r*thirty_by_360)
print(fv3)


10252777.777777778
10249315.06849315
10251388.888888888

LIBOR is widely used as a reference rate for many derivative products.

Derivatives - Forwards

A contract who value is contingent on the value of an underlying for example, GOOG stock, T-bills, commodities like Corn, wheat, crude oil, livestock or a macroeconomic variable such as an interest rate, FX rate is known as a derivative, since the contract derives its value and is contingent on the value of the underlying asset. Derivatives are known as contingent claims.

The simplest derivative is a forward contract, which is an agreement between two parties to buy or sell an asset, such as a foreign currency, at a certain time $T>0$ for a certain delivery price $K$, set at contract inception $t_{0}$. Forwards are traded over-the-counter(OTC). Standardized exchange-traded contracts, such as those on the Chicago Mercantile Exchange(CME) are known as futures.

Forward price and MTM

In a forward contract, there are two parties, usually two financial institutions or a financial institution and a client. One party agrees to buy the asset in the forward contract at maturity, time $T$ and is said to be long, and the counterparty agrees to sell the asset to the buyer at $T$ and is said to be short. The contract is settled at maturity $T$: the short delivers the asset worth $S_{T}$ to the long in return for a cash amount $K$.

An FX outright forward is a contract to buy or sell the base currency at a future time at a certain rate. FX outright forwards are widely used by corporations to manage foreign exchange risk. For example, suppose Microsoft has Japanese subsidiary that expects to send it 100 million yens in three months. When Microsoft receives the yens, it will then convert them to dollars. Thus, Microsoft is essentially long yens, and short the dollar. An buy USD/sell JPY forward is especially useful in this situation, because it enables Microsoft to lock in the rate at which it will buy dollar-sell yens in three months.